package cn.ronghuanet.base.util;

import cn.ronghuanet.org.domain.Employee;
import cn.ronghuanet.org.domain.Shop;
import org.apache.commons.lang3.StringUtils;

import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;

/**
 * 登录上下文
 * 登录成功,设置登录信息
 * 获取当前登录人信息
 */
public class LoginContext {
    public static Map<String,Object> loginMap = new HashMap<>();

    /**
     * 在登录成功以后,将登录信息写入redis/map等中
     */
    public static void setLoginUser(){

    }

    /**
     * 获取当前登录人信息
     */
    public static Employee getLoginUser(HttpServletRequest request){
        // 1 获取请求头中的token
        String token = request.getHeader("token");

        // 2 如果token为空,在项目中应该返回错误信息,在开发阶段,我们可以先写死登录信息先进行开发测试
        if(StringUtils.isBlank(token)){
            Employee employee = new Employee();
            employee.setId(340L);
            employee.setUsername("admin");
            employee.setRealName("张三");
            Shop shop = new Shop();
            shop.setId(48L);
            shop.setName("姚桑成都温江官方旗舰店");
            employee.setShop(shop);
            return employee;
        }
        // 3 如果token不为空,则从map/redis中获取登录信息
        Object obj = loginMap.get(token);
        // 4 如果登录信息为空,在项目中应该返回错误信息,在开发阶段,我们可以先写死登录信息先进行开发测试
        if(Objects.isNull(obj)){
            Employee employee = new Employee();
            employee.setId(340L);
            employee.setUsername("admin");
            employee.setRealName("张三");
            Shop shop = new Shop();
            shop.setId(48L);
            shop.setName("姚桑成都温江官方旗舰店");
            employee.setShop(shop);
            return employee;
        }
        // 5 如果登录信息不为空,则直接返回登录信息
        return (Employee) obj;
    }
}
